# Index: OSLib/!OsLib/Source/Test/Test/GNUmakefile	20040121
#===================================================================

#------------------------------------------------------------------------
# paths & directories
SOURCEDIR	= ../..
include ${SOURCEDIR}/GNUmakefile.settings
include ${SOURCEDIR}/../GNUmakefile.settings

#------------------------------------------------------------------------
#target-specific macros
SOURCES_0 	= Computer Core Toolbox User
SOURCES		= ${SOURCES_0} Types Macros
CONTENTS	= $(addsuffix /oslib/Modules, $(addprefix ${SOURCEDIR}/, ${SOURCES_0}) )
OSLIB		= ${SOURCEDIR}/OSLib.o
OSLIB32		= ${SOURCEDIR}/OSLib32.o
OSLIB_H		= oslib.h
OSLIB_HH	= OSLib.Hdr

INCLUDES	= $(addprefix -I${SOURCEDIR}/, ${SOURCES} )

ASOPTIONS	= $(shell echo -objasm -apcs32 $(addprefix -I${SOURCEDIR}/, ${SOURCES} ) | \
			sed 's/ /,/g' )

#------------------------------------------------------------------------
# tools
AS		= ${GCCSDK_INSTALL_CROSSBIN}/gcc -xassembler -Wa,${ASOPTIONS}
GCC		= ${GCCSDK_INSTALL_CROSSBIN}/gcc
GPP		= ${GCCSDK_INSTALL_CROSSBIN}/g++
LD		= ${GCCSDK_INSTALL_CROSSBIN}/gcc
RM		= rm -f

include ${CONTENTS}

#------------------------------------------------------------------------
# Targets:
.PHONY:		all clean

TEST_C		= test_c
TEST_CPP	= test_cpp
TEST_S		= test_s

BIN_C		= ${TEST_C},ff8
BIN_CPP		= ${TEST_CPP},ff8
BIN_S		= ${TEST_S},ff8

all:		${BIN_C} ${BIN_CPP} ${BIN_S}

${OSLIB_H}:	${CONTENTS}
		@echo ${MODULES} ${SWIMODULES} | \
			tr '[A-Z] ' '[a-z]\n' | \
			sed 's/.*/#include \"oslib\/&.h\"/g' \
			> $@

${OSLIB_HH}:	${CONTENTS}
		@echo $(sort ${MODULES} ${SWIMODULES} Types Macros) | \
			tr ' ' '\n' | \
			sed 's/.*/@GET@oslib\/&.Hdr/g' | \
			tr '@' '\t' \
			> $@

${TEST_S}.o:	test.s ${OSLIB_HH}
	${AS} -c $< -o $@

${BIN_S}:	${TEST_S}.o ${OSLIB}
	${LD} $^ -o $@

${TEST_C}.o:	test.c ${OSLIB_H}
	${GCC} -c $< ${INCLUDES} -o $@

${BIN_C}:	${TEST_C}.o ${OSLIB}
	 ${LD} $^ -o $@

${TEST_CPP}.o:	test.cc ${OSLIB_H}
	${GPP} -c $< ${INCLUDES} -o $@

${BIN_CPP}:	${TEST_CPP}.o ${OSLIB}
	 ${GPP} $^ -o $@

clean:	;-${RM} \
${BIN_C} \
${TEST_C}.o \
${BIN_CPP} \
${TEST_CPP}.o \
${BIN_S} \
${TEST_S}.o \
${OSLIB_H} \
${OSLIB_HH}
